This invention relates generally to the field of storage RAID controllers and Storage Area Network (SAN) systems. Mainly to improving data access speeds by facilitating massively parallel data access by separating Front-End and Back-End software functionality. Thus, executing appropriate code concurrently on separate Front-End Storage Area Network (FE_SAN) and Beck-End Storage Area Network (BE_SAN) controllers connected via high-speed network (switched fabric such as Advanced Switching (AS), lnfiniband, Serial Attached SCSI (SAS), Fibre Channel (FC), Myrinet, etc.).
As ever-increasing demand for more data hence, for more data storage, SAN and RAID technologies available today have failed to meet performance requirements and with prohibitively high cost made them out of reach for the majority of the small and some medium size businesses. By utilizing this enabling scalable technology that uses, mostly, of the shelf components to bring the cost down and it is specifically designed to extend system capabilities and eliminate I/O bottlenecks. The majority of small and medium businesses should be able to afford such entry-level systems (with few FE_SAN and BE_SAN controllers) and add more controllers for more capacity and performance as they grow.
A majority of small and some medium size businesses and corporations, recognizing the productivity gains resulting from high-performance and high availability computing systems are often unable to acquire suchlike systems due to prohibitively high cost of data storage subsystems. To reduce the cost they often utilize large number of disjoint individual servers where each server is dedicated to one or more specific applications, such as mail servers, accounting packages, etc. This environment, clearly, leads to underutilized available aggregate computing power of all servers since each server is dedicated to specific application and the workload cannot be shared. This approach introduces other issues such as system and network administration, fault tolerance, fragmented data storage, data storage and backup management problems, as well as system complexity, and so forth. Data access and data sharing could be done at different levels such as block access (shared storage), multiple hosts accessing the same disk drives or Logical Unit Numbers (LUNs), or using file systems like Network File System, Common Internet File System, etc.
A Network File System (NFS) is a client/server application that facilitates viewing and optionally storing and updating files stored on a remote computer (often called file server). The client system, which may be a work station or cluster node, has to run an NFS client and the other computer, file server, needs the NFS server software. Both computers typically must have networking protocol software such as Transmission Control Protocol/Internet Protocol (TCP/IP) and networking hardware such as Ethernet, InfiniBand, Myrinet, or other Network Interface Cards (NICs) installed, since the NFS server and NFS client use network protocols to send the files and updates back and forth. This approach leads to a bandwidth bottleneck on both client and file server sides due to NFS protocol overhead, limited Peripheral Component Interconnect (PCI) bus data rate, and possibly high latency associated with traditional architecture of the data storage subsystem attached to it.
A protocol standard developed by Microsoft, Common Internet File System (CIFS), that allows programs to make requests for files and services located on remote computer facilitates the same basic function as previously mentioned NFS. CIFS is typically utilized in Microsoft operating system environments to allow shared access from one computer to files stored on another remote computer within the same network. A CIFS client makes a request to a CIFS server (usually in another computer) for a file access or to pass a message. The server executes requested action and returns a response. CIFS is a public version of the Server Message Bock (SMB) protocol. The file server running CIFS suffers from the same problems as earlier mentioned NFS server because, this is in essence the same or similar hardware and technology. This clearly reveals the need to get data (disk storage) as close as possible to host CPU (memory).
TCP/IP protocol overhead together with network latency affects the performance of NFS/CIFS subsystems by significantly increasing access delays for network-attached disk when compared to locally attached disk. However, locally attached disk performance, usually, is much worse compared to data storage subsystem implementations such as RAID or Storage Area Network (SAN) subsystem. Traditional SAN design and implementation even though in many cases superior to locally attached disk drives, underutilize aggregate data rate potential of all attached disk drives by making use of time division multiplexing over typically small number of I/O (network) links between servers and the SAN subsystem attached to it.
To achieve the best performance with today's SAN technology every server or cluster node should be connected directly or through a rearrangeably non-blocking switched fabric to the SAN subsystem. The SAN subsystem should be able to support the sum of data rates on all links between the servers (or cluster nodes) and the SAN subsystem without significantly increasing the command queue size (the number of outstanding requests in the queue waiting to be executed). However, the architectural designs (hardware and software) of today's SAN subsystems create bottlenecks in the SAN controllers due to insufficient aggregate bandwidth and limited scalability. Even though Fibre Channel is designed with the intent to allow similar architectures, the protocol complexity and prohibitively high cost of the FC technology (HBAs and FC switches) effectively prevented significant progress in the field of data storage.